package com.egg.common;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;


/**
 * @项目名称：shafashuo-app   
 * @类名称：CostTimeAspect   
 * @类描述：使用aop记录每个方法执行所花费时间，为后期优化提供数据依据
 * @创建人：wangchenyang
 * @创建时间：2012-8-16 上午11:11:27   
 * @修改人：
 * @修改时间：   
 * @修改备注：   
 * @version
 */
public class CostTimeAspect {

	public void doBeforeLog(JoinPoint jp) {
		System.out.println(jp.getTarget().getClass().getName() + "."+ jp.getSignature().getName()+" is begining");
	}

	// 方法名可以任意，但必须和aop配置文件中保持一致
	public void doAfterLog(JoinPoint jp) {
		System.out.println(jp.getTarget().getClass().getName() + "."+ jp.getSignature().getName()+" is end");
	}

	public Object doAroundX(ProceedingJoinPoint pjp) throws Throwable {
		long times = System.currentTimeMillis();
		Object retVal = pjp.proceed();
		times = System.currentTimeMillis() - times;
		System.out.println("cost time is :" + times + " ms");
		return retVal;
	}


	public void doThrowing(JoinPoint jp, Throwable ex) {
		System.out.println("method " + jp.getTarget().getClass().getName()
				+ "." + jp.getSignature().getName() + " throw execption");
		System.out.println(ex.getMessage());
	}
}
